package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import javax.swing.table.TableModel;

import negocio.Proyecto;
import negocio.Tarea;


public class AdmPersistenciaProyecto 
{
private static AdmPersistenciaProyecto instancia;
	
	public static AdmPersistenciaProyecto getInstancia(){
		if(instancia == null)
			return new AdmPersistenciaProyecto();
		return instancia;
	}
	
	public String[] selectAllProyecto() {
		System.out.println("LOG: AdmPersistenciaProyecto / selectAllProyecto [INICIO]");
		String[]jer = new String[20];
		int i = 0;
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select nombre from proyecto");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				jer[i] = rs.getString(1);
				i++;
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaProyectyo / selectAllProyecto[FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return jer;
	}
	
	
	
	public Vector<Proyecto> selectReporteProductividad () {
		System.out.println("LOG: AdmPersistenciaProyecto/ selectProyecto [INICIO]");
		Proyecto pro = new Proyecto();
		Vector <Proyecto>  proyectos=  new Vector<Proyecto>();
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select * from proyecto");
			ps.setInt(1, 5);
			ResultSet rs = ps.executeQuery();
			
			
			while(rs.next()){
				pro.setId_Proyecto(rs.getInt(1));
				pro.setDescripcion(rs.getString(3));
				pro.setFechaInicio(rs.getDate(5));
				pro.setFechaF(rs.getDate(6));
				pro.setHorasAsignadas(rs.getInt(7));
				
				proyectos.add(pro);
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaProyecto/ selectProyecto [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return proyectos;
		
	}
	public Proyecto selectProyecto (Long idproyecto) {
		System.out.println("LOG: AdmPersistenciaProyecto/ selectProyecto [INICIO]");
		Proyecto pro = new Proyecto();
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select * from proyecto where id_pro = ?");
			ps.setLong(1,idproyecto);
			ResultSet rs = ps.executeQuery();
			
			
			while(rs.next()){
				pro.setId_Proyecto(rs.getInt(1));
				pro.setDescripcion(rs.getString(3));
				pro.setFechaInicio(rs.getDate(5));
				pro.setFechaF(rs.getDate(6));
				pro.setHorasAsignadas(rs.getInt(7));
				pro.setFacturacion(rs.getDouble(11));
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaProyecto/ selectProyecto [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return pro;
		
	}

	public Long selectIdProyecto(String proyecto) {
		System.out.println("LOG: AdmPersistenciaProyecto / selectIdProyecto [INICIO]");
		try{
			Connection con = ConectorSQL.conectar(); 
			PreparedStatement ps = con.prepareStatement("select id_pro from proyecto where nombre = ?");
			ps.setString(1,proyecto);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				return rs.getLong(1);
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaProyecto / selectIdProyecto [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return (long)-1;
	}

	public TableModel selectAllHs(Long long1) {
		
		return AdmPersistenciaTarea.getInstancia().selectAllHs(long1);
	}

	
	public Vector<Tarea> selectAllTareas(Long idProy) {
		
		Vector<Tarea> tareas = new Vector<Tarea>();
		System.out.println("LOG: AdmPersistenciaProyecto / selectIdProyecto [INICIO]");
		try{
			Connection con = ConectorSQL.conectar(); 
			PreparedStatement ps = con.prepareStatement("select * from tarea where id_pro = ?");
			ps.setLong(1,idProy);
			ResultSet rs = ps.executeQuery();
			Tarea aux = null;
			while(rs.next()){
				aux = new Tarea();
				aux.setId_Tarea(rs.getLong(1));
				aux.setId_Proyecto(rs.getLong(2));
				aux.setId_Empleado(rs.getLong(3));
				aux.setNombre(rs.getString(5));
				aux.setHorasAsignadas(rs.getInt(6));
				aux.setHorasTotalCargadas(rs.getInt(7));
				aux.setDescripcion(rs.getString(8));
				aux.setId_Estado(rs.getLong(9));
				aux.setId_Costo(rs.getLong(10));
				aux.setTipoTarea(rs.getString(4));
				tareas.add(aux);
			}

			con.close();
			System.out.println("LOG: AdmPersistenciaProyecto / selectIdProyecto [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
			tareas.clear();
			
		}
		return tareas;
	}
}
